<HTML>
<HEAD>
<!-- This HTML file has been created by texi2html 1.29
     from sysadmin.tnf on 19 December 2010 -->

<TITLE>Eli System Administration Guide - Examples of Package Use</TITLE>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000EE" VLINK="#551A8B" ALINK="#FF0000" BACKGROUND="gifs/bg.gif">
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0" VALIGN=BOTTOM>
<TR VALIGN=BOTTOM>
<TD WIDTH="160" VALIGN=BOTTOM>
<A HREF="http://eli-project.sourceforge.net/">
<IMG SRC="gifs/elilogo.gif" BORDER=0>
</A>&nbsp;
</TD>
<TD WIDTH="25" VALIGN=BOTTOM>
<img src="gifs/empty.gif" WIDTH=25 HEIGHT=25>
</TD>
<TD ALIGN=LEFT WIDTH="475" VALIGN=BOTTOM>
<A HREF="index.html"><IMG SRC="gifs/title.png" BORDER=0></A>
</TD>
<!-- |DELETE FOR SOURCEFORGE LOGO|
<TD>
<a href="http://sourceforge.net/projects/eli-project">
<img
  src="http://sflogo.sourceforge.net/sflogo.php?group_id=70447&amp;type=13"
  width="120" height="30"
  alt="Get Eli: Translator Construction Made Easy at SourceForge.net.
    Fast, secure and Free Open Source software downloads"/>
</a>
</TD>
|DELETE FOR SOURCEFORGE LOGO| -->
</TR>
</TABLE>

<HR size=1 noshade width=785 align=left>
<TABLE BORDER=0 CELLSPACING=2 CELLPADDING=0>
<TR>
<TD VALIGN=TOP WIDTH="160">
<h4>General Information</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="index.html">Eli: Translator Construction Made Easy</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gindex_1.html#SEC1">Global Index</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="faq_toc.html" >Frequently Asked Questions</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Tutorials</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="EliRefCard_toc.html">Quick Reference Card</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="novice_toc.html">Guide For new Eli Users</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="news_toc.html">Release Notes of Eli</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="nametutorial_toc.html">Tutorial on Name Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="typetutorial_toc.html">Tutorial on Type Analysis</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Reference Manuals</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ui_toc.html">User Interface</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="pp_toc.html">Eli products and parameters</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lidoref_toc.html">LIDO Reference Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ee.html" >Typical Eli Usage Errors</a> </td></tr>
</table>

<h4>Libraries</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lib_toc.html">Eli library routines</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="modlib_toc.html">Specification Module Library</a></td></tr>
</table>

<h4>Translation Tasks</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lex_toc.html">Lexical analysis specification</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="syntax_toc.html">Syntactic Analysis Manual</a></td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="comptrees_toc.html">Computation in Trees</a></td></tr>
</table>

<h4>Tools</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="lcl_toc.html">LIGA Control Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="show_toc.html">Debugging Information for LIDO</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="gorto_toc.html">Graphical ORder TOol</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="fw_toc.html">FunnelWeb User's Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="ptg_toc.html">Pattern-based Text Generator</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="deftbl_toc.html">Property Definition Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="oil_toc.html">Operator Identification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="tp_toc.html">Tree Grammar Specification Language</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="clp_toc.html">Command Line Processing</a> </td></tr>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="cola_toc.html">COLA Options Reference Manual</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="idem_toc.html">Generating Unparsing Code</a> </td></tr>
</table>
<p>
<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="mon_toc.html">Monitoring a Processor's Execution</a> </td></tr>
</table>

<h4>Administration</h4>

<table BORDER=0 CELLSPACING=0 CELLPADDING=0>
<tr valign=top><td><img src="gifs/gelbekugel.gif" WIDTH=7 HEIGHT=7 ALT=" o"> </td><td><a href="sysadmin_toc.html">System Administration Guide</a> </td></tr>
</table>

<HR WIDTH="100%">
<A HREF="mailto:eli-project-users@lists.sourceforge.net">
<IMG SRC="gifs/button_mail.gif" BORDER=0 ALIGN="left"></A>
<A HREF="index.html"><IMG SRC="gifs/home.gif" BORDER=0 ALIGN="right"></A>

</TD>
<TD VALIGN=TOP WIDTH="25"><img src="gifs/empty.gif" WIDTH=25 HEIGHT=25></TD>

<TD VALIGN=TOP WIDTH="600">
<H1>Eli System Administration Guide</H1>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="sysadmin_3.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="sysadmin_5.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="sysadmin_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
<H1><A NAME="SEC11" HREF="sysadmin_toc.html#SEC11">Examples of Package Use</A></H1>
<P>
Each example uses a cache directory with an explicit name given by a
<CODE>-c</CODE> parameter.
If you don't generally work on more than one project at a time, then you
may wish to omit the <CODE>-c</CODE> parameter and use the same cache for
every project
(see  <A HREF="sysadmin_2.html#SEC5">Name of the cache</A>).
<P>
All of these examples assume that you have installed eli in directory
<TT>`/opt/eli'</TT>
(see  <A HREF="sysadmin_3.html#SEC9">Installing Eli</A>).
<P>
<H2><A NAME="SEC12" HREF="sysadmin_toc.html#SEC12">Using a single additional package</A></H2>
<P>
The Eli packages understand LALR(1) grammars and how to use
them to generate deterministic parsers.
Unfortunately, some languages are very difficult to describe using such
grammars.
<P>
A package named <CODE>bisonglr</CODE> is available from the Eli web site.
It uses the Bison parser generator's "GLR" facility to create parsers
for grammars that cannot easily be rewritten to make them LALR(1).
This package assumes that you have the Bison parser generator available in
your path, under the name <CODE>bison</CODE>.
No change in specifications is required; the package handles all of the
necessary translations and integration.
<P>
Suppose that you have downloaded the <CODE>bisonglr</CODE> package and unpacked
it to your home directory.
Then the following command builds a cache called <CODE>GLRCACHE</CODE> in your
home directory.
Assuming that <CODE>$ODINPATH</CODE> is empty,
<CODE>GLRCACHE</CODE> is built from the <CODE>bisonglr</CODE> package
plus the standard Eli and Odin packages
(see  <A HREF="sysadmin_2.html#SEC6">Packages in the cache</A>).
<P>
<PRE>
eli -c $HOME/GLRCACHE -R -p $HOME/bisonglr
</PRE>
Note that absolute path names are used for both the cache directory and the
package directory.
<P>
If you frequently worked on languages whose grammars required the
<CODE>bisonglr</CODE> package, you could add it to the Eli package library by
making the request:
<P>
<PRE>
-&#62; $HOME/bisonglr +d_dest=(/opt/eli/lib/Eli) :installpkg
</PRE>
After making this request, the next time you build a cache the standard Eli
packages will include <CODE>bisonglr</CODE>.
<P>
<H2><A NAME="SEC13" HREF="sysadmin_toc.html#SEC13">Maintaining distributed packages</A></H2>
<P>
The text for the Eli system is kept in a CVS repository.
For the purposes of this example, assume that you have checked out a copy
of the distribution directory <TT>`Elidistrib'</TT>.
The name of your working directory will therefore be <TT>`Elidistrib'</TT>.
The directory containing the standard Eli package collection is then
<TT>`Elidistrib/Eli/pkg'</TT>, and the directory containing the standard Odin
package collection is <TT>`Elidistrib/Odin/pkg'</TT>.
<P>
You will use your working directory to develop and test changes to the
standard packages, ultimately checking in the final version.
During the development process, you want to run Eli with certain package
directories from your working directory substituted for the corresponding
directories in <TT>`/opt/eli'</TT>.
<P>
For example, suppose that your working directory is a subdirectory of your home
directory and you need to debug the <CODE>gla</CODE> package.
The following command will build the cache <TT>`DBGCACHE'</TT> in which the
<CODE>gla</CODE> package from your working directory takes the place of the
standard <CODE>gla</CODE> package:
<P>
<PRE>
eli -c $HOME/DBGCACHE -R -p $HOME/Elidistrib/Eli/pkg/gla
</PRE>
<P>
If you need to work on several packages at once,
a good strategy is to create a new package collection directory and
populate it with symbolic links to package directories in your working
directory:
<P>
<PRE>
mkdir $HOME/pkg
ln -s $HOME/Elidistrib/Eli/pkg/gla    $HOME/pkg
ln -s $HOME/Elidistrib/Eli/pkg/parser $HOME/pkg
ln -s $HOME/Elidistrib/Eli/pkg/pgs    $HOME/pkg
...
</PRE>
You then put the names of the packages you want to work on into
<TT>`$HOME/pkg/PKGLST'</TT> and build the debug cache with the following
command:
<P>
<PRE>
eli -c $HOME/DBGCACHE -R -p $HOME/pkg
</PRE>
Once you have finished debugging, you can leave the <TT>`pkg'</TT> directory
with its symbolic links in place.
When you need to debug other packages, you add any new links
and edit <TT>`PKGLST'</TT> to name the packages on which you want to work.
Links to currently-uninteresting packages remain for future debugging
sessions, but because their names are not listed in <TT>`PKGLST'</TT> they are
ignored.
<P>
<H2><A NAME="SEC14" HREF="sysadmin_toc.html#SEC14">Developing additional packages</A></H2>
<P>
A package being developed requires a package directory.
It is often useful to make that directory a subdirectory of the
<TT>`$HOME/pkg'</TT> directory
(see  <A HREF="sysadmin_4.html#SEC13">Maintaining distributed packages</A>).
It can then be used either singly or in combination with other packages
being debugged.
<P>
All of the additional packages developed to date are kept in the
<CODE>Packages</CODE> directory of the CVS repository.
If you are developing an additional package for Eli, you might decide to
check out the <CODE>Packages</CODE> directory and develop your package in a
subdirectory of the resulting working directory.
This is generally <EM>not</EM> a good idea.
The reason is that you will ultimately want to use a CVS <CODE>import</CODE>
command to add your package to the repository.
That command expects a directory distinct from your working directory.
A subsequent checkout with the <CODE>-d</CODE> parameter will add the imported
directory to your working directory.
If the package directory that you developed is a subdirectory of your working
directory, it will have to be moved before the checkout takes place.
Thus it is better develop the package in a directory (such as
<TT>`$HOME/pkg'</TT>) that is disjoint from your working directory.
<P>
<HR size=1 noshade width=600 align=left>
<P>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="sysadmin_3.html"><IMG SRC="gifs/prev.gif" ALT="Previous Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="sysadmin_5.html"><IMG SRC="gifs/next.gif" ALT="Next Chapter" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT=""><A HREF="sysadmin_toc.html"><IMG SRC="gifs/up.gif" ALT="Table of Contents" BORDER="0"></A>
<IMG SRC="gifs/empty.gif" WIDTH=25 HEIGHT=25 ALT="">
<HR size=1 noshade width=600 align=left>
</TD>
</TR>
</TABLE>

</BODY></HTML>
